//
//  LBHTTPResponse.h
//  LBNetworking
//
//  Created by WuShiHai on 19/5/30.
//  Copyright (c) 2019 Lebbay. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, LBHTTPResponseError) {
    LBHTTPResponseErrorNetwork = 2000,//网络不可达
    LBHTTPResponseErrorServer,//服务器异常 errorCode:500 400 401 402 etc.
    LBHTTPResponseErrorBusiness,//业务逻辑出错
    LBHTTPResponseErrorUnknow,//未知错误
};

@interface LBHTTPResponse : NSObject

/**
 返回状态码，包含服务器返回的正确状态码，或者服务器异常状态码，如500 等
 */
@property (nonatomic, assign) NSInteger code;

/**
 对实际code进行一次转义后的错误码
 */
@property (nonatomic, assign) LBHTTPResponseError errorCode;

/**
 错误信息
 */
@property (nonatomic, strong) NSString *errorMsg;

/**
 服务器返回的原始数据 or NSError
 */
@property (nonatomic, strong) id response;

/**
 从服务器返回的字典中，取类似'data'的value，如果是字典，则该字段有值，否则为nil。
 */
@property (nonatomic, strong) NSDictionary *responseDictionary;

/**
 从服务器返回的字典中，取类似'data'的value，如果是数组，则该字段有值，否则为nil。
 */
@property (nonatomic, strong) NSArray *responseArray;

/**
 请求参数，字符串类型
 */
@property (nonatomic, strong) NSString *parameters;

/**
 请求的地址
 */
@property (nonatomic, strong) NSString *url;

/**
 识别服务端错误，对无法识别的返回Unknow

 @param code 数字
 @return 枚举类型
 */
+ (LBHTTPResponseError)errorServerCode:(NSInteger)code;

@end
